﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using Data;
using RegistroMascotas.Modelo;
using System.Net;

namespace Service
{
    public class GestorDeBusqueda
    {
        public static Mascota obtenerMascotaPorCodigoAlternativo(String codigo){
            Mascota miMascota = null;

            try
            {
                miMascota = MascotaDAO.obtenerMascotaPorCodigoAlternativo(codigo);

                if (miMascota == null)
                {
                    //throw new Exception("El código ingresado no pertenece a ninguna mascota registrada.");
                }
            }
            catch (Exception e)
            {                
                throw e;
            }

            return miMascota;
        }

        public static Mascota obtenerMascotaPorId(int idMascota)
        {
            Mascota miMascota = null;

            try
            {
                miMascota = MascotaDAO.obtenerMascotaPorId(idMascota);

                if (miMascota == null)
                {
                    throw new Exception("No se pudo encontrar la mascota.");
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return miMascota;
        }

        public static List<Mascota> obtenerMisMascotas(int idDueño)
        {
            List<Mascota> mascotas = null;

            try
            {
                mascotas = PersonaDAO.obtenerMisMascotas(idDueño);

                if (mascotas == null)
                    throw new Exception("El dueño no posee mascotas.");

            }
            catch (Exception ex)
            {                
                throw ex;
            }

            return mascotas;
        }

        public static List<Dueño> obtenerDueños(string nombreDueño)
        {
            List<Dueño> dueños = null;

            try
            {
                dueños = MascotaDAO.obtenerMisDueños(nombreDueño);

                if (dueños == null)
                    throw new Exception("No se encontraron resultados compatibles con el nombre ingresado.");

            }
            catch (Exception ex)
            {
                throw ex;
            }

            return dueños;
        }

        public static List<Veterinario> obtenerVeterinarios(string nombreVeterinario)
        {
            List<Veterinario> veterinarios = null;

            try
            {
                veterinarios = MascotaDAO.obtenerMisVeterinarios(nombreVeterinario);

                if (veterinarios == null)
                    throw new Exception("No se encontraron resultados compatibles con el nombre ingresado.");

            }
            catch (Exception ex)
            {
                throw ex;
            }

            return veterinarios;
        }

        public static List<Persona> buscaPorDniMatricula(long dniMatricula)
        {
            List<Persona> personas = null;

            try
            {
                personas = MascotaDAO.buscarPorDniMatricula(dniMatricula);

                if (personas == null)
                    throw new Exception("No se encontraron resultados compatibles con el criterio de busqueda.");

            }
            catch (Exception ex)
            {
                throw ex;
            }

            return personas;
        }

        public static List<Centro> obtenerZoos()
        {
            List<Centro> zoos = null;

            try
            {
                zoos = PersonaDAO.obtenerZoonosis();

                if (zoos == null)
                    throw new Exception("No se encontraron centros de zoonosis.");

            }
            catch (Exception ex)
            {
                throw ex;
            }

            return zoos;
        }

        public static Dueño obtenerDueñoPorId(int idDueño) {
            Dueño miDueño = null;

            try
            {
                miDueño = PersonaDAO.obtenerDueñoPorId(idDueño);    
            }
            catch (Exception ex)
            {                
                throw ex;
            }
            return miDueño;
        }

        public static bool mandarMail(Dueño dueñito, string nombreMascota) {
            bool exito = false;

            //creamos el objeto mail
            MailMessage msg = new MailMessage();

            msg.To.Add(new MailAddress(dueñito.Mail));
            msg.From = new MailAddress("info@renacmas.com.ar");
            msg.Subject = "Registro Provincial de Mascotas: La chapita de su mascota está lista.";
            msg.Body = "Señor/a " + dueñito.Nombre + ": Le informamos que la chapita de su mascota " + nombreMascota + " ya está disponible para su retiro. Acerquese al municipio o centro de zoonosis de su distrito para poder retirarla. \n Reg Nac Mas.";
            
            SmtpClient smtp = new SmtpClient();

            smtp.Credentials = new NetworkCredential(msg.From.Address, "RENACMAS");

            smtp.Host = "mail.renacmas.com.ar";
            smtp.Port = 25;
            smtp.EnableSsl = false;
            
            try
            {
                smtp.Send(msg);
                exito = true;
                msg.Dispose();
            }
            catch (Exception ex)
            {                
                throw ex;
            }

            return exito;
        }

        public static Chapita obtenerChapitaPorId(int idChapita) {
            Chapita c = null;
            
            try
            {
                c = MascotaDAO.obtenerChapitaPorId(idChapita);
            }
            catch (Exception e)
            {                
                throw e;
            }

            return c;
        }
    }
}